﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpIfcInterface.h"
#include "GbmpTypeDefs.h"

namespace gcmp
{
    class IDocument;
    class IModelView;

    /// \brief IfcExportMode类表示IFC导出时生成的形体的模式，不同的模式会生成不同的IFC形体对象，但是不影响非形体对象的导出。
    ///AdvancedBrep模式表示用多个面组成的封闭面来描述一个三维形体，Mesh模式表示用若干三角面片的方式来描述一个三维形体。
    enum class GCMP_IFC_INTERFACE_EXPORT IfcExportMode : int32_t
    {
        AdvancedBrep = 0,    ///< AdvancedBrep方式导出
        Mesh = 1             ///< Mesh方式导出
    };

    /// \brief 几何转换上下文，几何转换时可能用到的Document、ModelView等
    struct GCMP_IFC_INTERFACE_EXPORT IfcGeometryConvertContext
    {
        IDocument*      Document            = nullptr;                        ///<文档
        IModelView*     ModelView           = nullptr;                        ///<视图
        IfcExportMode   ExportMode          = IfcExportMode::AdvancedBrep;    ///<IFC导出方式
        bool            IsExportTextureMap  = false;                          ///<导出时是否导出材质贴图
    };
}
